[CMake] Fix c++ abi library configuration on Linux. You can now configure from the command line using: -DLIBCXX_CXX_ABI=libsupc++ -DLIBCXX_LIBSUPCXX_INCLUDE_PATHS="path;path Also documents how to build on Linux. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@171316 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/CMakeLists.txt b/CMakeLists.txt index 0f7941c..663467e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt
@@ -40,6 +40,9 @@ option(LIBCXX_ENABLE_SHARED "Build libc++ as a shared library." ON) set(CXXABIS none libcxxabi libcxxrt libsupc++) +if (NOT DEFINED LIBCXX_CXX_ABI) + set(LIBCXX_CXX_ABI "none") +endif() set(LIBCXX_CXX_ABI "${LIBCXX_CXX_ABI}" CACHE STRING "Specify C++ ABI library to use." FORCE) set_property(CACHE LIBCXX_CXX_ABI PROPERTY STRINGS "";${CXXABIS}) @@ -63,9 +66,10 @@ ) set(LIBCXX_TARGET_TRIPLE ${LIBCXX_TARGET_TRIPLE} CACHE STRING "Target triple.") -if (${LIBCXX_CXX_ABI} STREQUAL "libsupc++") - set(LIBCXX_LIBSUPCXX_INCLUDE_PATHS "" CACHE STRINGS - "Paths to libsupc++ include directories. Separate by system separator") +if ("${LIBCXX_CXX_ABI}" STREQUAL "libsupc++") + set(LIBCXX_LIBSUPCXX_INCLUDE_PATHS "${LIBCXX_LIBSUPCXX_INCLUDE_PATHS}" + CACHE STRINGS + "Paths to libsupc++ include directories separate by ';'.") set(LIBCXX_CXX_ABI_LIBRARIES stdc++) set(LIBCXX_LIBSUPCXX_FILES cxxabi.h @@ -75,6 +79,9 @@ bits/cxxabi_tweaks.h bits/cxxabi_forced.h ) + # Create include directories. + file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/include") + file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/include/bits") set(LIBCXX_LIBSUPCXX_FILE_PATHS) foreach(path ${LIBCXX_LIBSUPCXX_FILES}) set(found FALSE) @@ -106,7 +113,7 @@ FILES_MATCHING PATTERN "*" ) -elseif (${LIBCXX_CXX_ABI} NOT STREQUAL "none") +elseif (NOT "${LIBCXX_CXX_ABI}" STREQUAL "none") message(FATAL_ERROR "Currently only none and libsupc++ are supported for c++ abi.") endif ()